﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Dominio;
using Servicios;

namespace UI.Miembros
{
    public class Security
    {
        private List<RolPermitido> _permitidos =null;
        List<RolPermitido> Permitidos
        {
            set { this._permitidos = value; }
            get 
            {
                if (_permitidos == null)
                {
                    this._permitidos = CargaPermitidos();
                }
                return _permitidos;
            }
        }


        private List<RolPermitido> CargaPermitidos()
        {
            IList<Rol> roles=FabricaDeServicios.ObtenerInstancia().ObtenerRolService().ObtenerTodos();
            List<RolPermitido> result = new List<RolPermitido>();
            
            foreach (Rol r in roles)
            {

                IList<Funcionalidad> funcs = FabricaDeServicios.ObtenerInstancia().ObtenerFuncionalidadService().ObtenerFuncionalidadesPorIdRol(r.Id);
                foreach (Funcionalidad fun in funcs)
                {
                    RolPermitido perm = new RolPermitido();
                    perm.Role = r;
                    perm.Pagina = fun.Nombre;
                    result.Add(perm);
                }
            }
            return result;
        }
        public bool RolPermitido(Rol rol,string pagina)
        {
            bool permitido=false;
            RolPermitido perm = new RolPermitido();
            perm.Role = rol;
            perm.Pagina = pagina;
            permitido= this.Permitidos.Contains(perm);
            return permitido;
        }
    }
    class RolPermitido
    {
        public Rol Role { set; get; }
        public string Pagina { set; get; }

        public override bool Equals(object obj)
        {
            bool igualRol=Role.Equals(((RolPermitido)obj).Role) ;
            bool igualPagina=Pagina.Equals(((RolPermitido)obj).Pagina);
            return igualRol && igualPagina;
        }
    }
    


}